#!/bin/sh

#
# Test U-boot support for clearing the environment
#

. "$(cd "$(dirname "$0")" && pwd)/common.sh"

cat >$CONFIG <<EOF
define(UBOOT_ENV_OFFSET, 32)

uboot-environment uboot-env {
    block-offset = \${UBOOT_ENV_OFFSET}
    block-count = 2
}

task complete {
    on-finish {
       uboot_clearenv(uboot-env)
    }
}
EOF

# Create the expected result from setting the variables.
# To recreate, run:
#
# printf "\n" | mkenvimage -s "1024" - | base64
#
base64_decode >$WORK/expected-env.img <<EOF
l9t0EAD/////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////w==
EOF

# Create the firmware file, then "burn it"
$FWUP_CREATE -c -f $CONFIG -o $FWFILE
$FWUP_APPLY -a -d $IMGFILE -i $FWFILE -t complete

# The firmware file is equivalent to the following dd call
dd if=$IMGFILE of=$WORK/actual-env.img skip=32 count=2 2>/dev/null
cmp $WORK/expected-env.img $WORK/actual-env.img

# Check that the verify logic works on this file
$FWUP_VERIFY -V -i $FWFILE
